﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DL;
using Model;




namespace BL
{
    class CheckAvailability
    {
        //per cell kijken wat er gebeuren moet...
        public string BeschikbaarheidPerDatumEnUur(DateTime Date, string tijd, bool login, int ID, bool logedin)
        {
            //lijst ophalen van beschikbare data en uren
            DataModelManager CheckForAvailability = new DataModelManager();


            List<BeschikbaarheidArtsen> AvList = CheckForAvailability.getBeschikbaarheid(ID);  //beschikbaarheid uit de database halen...
            List<BeschikbaarheidArtsen> AvListOpDatum = new List<BeschikbaarheidArtsen>();
            List<BeschikbaarheidArtsen> AvListOpDatumEnUur = new List<BeschikbaarheidArtsen>();

            

            //filter juiste datum eruit
            if (AvList.Count != 0)
            {
                for (int i = 0; i < AvList.Count; i++)
                {
                    if (Date.ToShortDateString() == AvList[i].Datum.ToShortDateString())
                    {
                        AvListOpDatum.Add(AvList[i]);
                    }
                }
            }


            //filter op uur
            if (AvListOpDatum.Count != 0)
            {
                for (int i = 0; i < AvListOpDatum.Count; i++)
                {
                    DateTime StartUur = DateTime.Parse(AvListOpDatum[i].StartUur.ToString());
                    DateTime StopUur = DateTime.Parse(AvListOpDatum[i].EindUur.ToString());
                    DateTime AgendaTijd = DateTime.Parse(tijd);

                    if (AgendaTijd < StopUur && AgendaTijd >= StartUur)
                    {
                        AvListOpDatumEnUur.Add(AvListOpDatum[i]); //deze lijst mag niet leeg zijn om een link in te voeren...
                    }
                }
            }

            DataModelManager HaalAfsprakenOp = new DataModelManager();
            //Afspraken BekijkAfspraken = new Afspraken();
            List<DateTime> AlleAfspraken = HaalAfsprakenOp.getAfspraken(ID); //db afspraken
            List<DateTime> EnkelDieAFsprakenDieErNuToeDoen = new List<DateTime>();

            if (AlleAfspraken.Count != 0)
            {
                for (int i = 0; i < AlleAfspraken.Count; i++)
                {
                    string AgendaDatum = Date.ToShortDateString();
                    string Datum = AlleAfspraken[i].ToShortDateString();
                    string Uur = AlleAfspraken[i].ToShortTimeString();

                    if (AgendaDatum == Datum && tijd == Uur)
                    {
                        EnkelDieAFsprakenDieErNuToeDoen.Add(AlleAfspraken[i]);  //deze lijst moet leeg zijn om een link te kunnen zetten
                    }
                }
            }


            string vandaag = Date.ToShortDateString();
            string vandaaguur = vandaag + " " + tijd;
            DateTime afspraakuur = DateTime.Parse(vandaaguur);
            DateTime nu = DateTime.Now;


            if (Date <= DateTime.Now.AddDays(-1) || AvListOpDatumEnUur.Count == 0 || EnkelDieAFsprakenDieErNuToeDoen.Count != 0 || afspraakuur < nu)
            {
                return "leeg";  //datum ligt in het verleden (ongeacht beschikbaarheid dokter) of dokter is niet beschikbaar of er is een afspraak geboekt
            }
            else
            {
                if (login && !logedin)
                {
                    return "login";
                }
                else
                {
                    return "form";
                }
            }
        }
    }
}
